﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LeMigue.Scrum.TfsScrumV1.Utils
{
    public class WorkItemFields
    {
        public static readonly WorkItemFields Id = new WorkItemFields("id","System.Id");
        public static readonly WorkItemFields Title = new WorkItemFields("title", "System.Title");
        public static readonly WorkItemFields RemainingWork = new WorkItemFields("remaingwork", "Microsoft.VSTS.Scheduling.RemainingWork");
        public static readonly WorkItemFields WorkItemType = new WorkItemFields("itemtype", "System.WorkItemType");
        public static readonly WorkItemFields Description = new WorkItemFields("description", "System.Description");
        public static readonly WorkItemFields StartDate = new WorkItemFields("startdate", "Microsoft.VSTS.Scheduling.StartDate");
        public static readonly WorkItemFields FinishDate = new WorkItemFields("finishdate", "Microsoft.VSTS.Scheduling.FinishDate");
        public static readonly WorkItemFields TeamProject = new WorkItemFields("teamproject", "System.TeamProject");
        public static readonly WorkItemFields IterationId = new WorkItemFields("iterationid", "System.IterationId");
        public static readonly WorkItemFields LinkType = new WorkItemFields("linktype", "System.Links.LinkType");
        public static readonly WorkItemFields AssignedTo = new WorkItemFields("assignedto", "System.AssignedTo");
        /* links */
        public static readonly WorkItemFields SourceId = new WorkItemFields("sorceid","Source.System.Id");
        public static readonly WorkItemFields TargetWorkItemType = new WorkItemFields("targetitemtype","Target.System.WorkItemType");
        public static readonly WorkItemFields TargetId = new WorkItemFields("targetitemtype", "Target.System.Id");

        

        static WorkItemFields() { }

        private string _field;
        private string _key;

        private WorkItemFields(string key, string field)
        {
            _field = field;
            _key = key;
        }
        

        public override string ToString()
        {
            return this._field;
        }

        public string Key
        {
            get { return _key; }
        }
        /**
         * #Authorized As - System.AuthorizedAs
         * #Revised Date - System.RevisedDate
         * #Changed Date - System.ChangedDate
         * #Rev - System.Rev
         * #Area ID - System.AreaId

         * #Assigned To - System.AssignedTo
         * #Created Date - System.CreatedDate
         * #Created By - System.CreatedBy
         * #Changed By - System.ChangedBy
         
         * #History - System.History
         * #External Link Count - System.ExternalLinkCount
         * #Attached File Count - System.AttachedFileCount
         * #Hyperlink Count - System.HyperLinkCount
         * #Related Link Count - System.RelatedLinkCount
         * #State - System.State#Reason - System.Reason
         * #Iteration Path - System.IterationPath
         
         * #Node Name - System.NodeName
         * #Area Path - System.AreaPath
         * #Backlog Priority - Microsoft.VSTS.Common.BacklogPriority
         * #Activity - Microsoft.VSTS.Common.Activity
         * #Integration Build - Microsoft.VSTS.Build.IntegrationBuild
         * #Blocked - Microsoft.VSTS.CMMI.Blocked
         * #Description HTML - Microsoft.VSTS.Common.DescriptionHtml
         * #System Info - Microsoft.VSTS.TCM.SystemInfo
         * #Repro Steps - Microsoft.VSTS.TCM.ReproSteps
         * #Effort - Microsoft.VSTS.Scheduling.Effort
         * #Acceptance Criteria - Microsoft.VSTS.Common.AcceptanceCriteria
         * #Severity - Microsoft.VSTS.Common.Severity
         * #Found In - Microsoft.VSTS.Build.FoundIn
         * #Resolution - Microsoft.VSTS.Common.Resolution
         * #Priority - Microsoft.VSTS.Common.Priority
         * #Business Value - Microsoft.VSTS.Common.BusinessValue
         * #Stack Rank - Microsoft.VSTS.Common.StackRank
         * #Issue - Microsoft.VSTS.Common.Issue
         * #State Change Date - Microsoft.VSTS.Common.StateChangeDate
         * #Activated Date - Microsoft.VSTS.Common.ActivatedDate
         * #Activated By - Microsoft.VSTS.Common.ActivatedBy
         * #Closed Date - Microsoft.VSTS.Common.ClosedDate
         * #Closed By - Microsoft.VSTS.Common.ClosedBy
         * #Steps - Microsoft.VSTS.TCM.Steps
         * #Parameters - Microsoft.VSTS.TCM.Parameters
         
         * #Retrospective - Microsoft.VSTS.Common.Retrospective
         * #Automated Test Name - Microsoft.VSTS.TCM.AutomatedTestName
         * #Automated Test Storage - Microsoft.VSTS.TCM.AutomatedTestStorage
         * #Automated Test Id - Microsoft.VSTS.TCM.AutomatedTestId
         * #Automated Test Type - Microsoft.VSTS.TCM.AutomatedTestType
         * #Local Data Source - Microsoft.VSTS.TCM.LocalDataSource
         * #Automation status - Microsoft.VSTS.TCM.AutomationStatus
         * #
         * */
    }
}
